package com.newtouch.bxzs.common.base.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 保单实体类
 *
 * <p>
 * <b>History:</b>
 * <table border="1">
 * <tr>
 * <th>Date</th>
 * <th>Operator</th>
 * <th>Memo</th>
 * </tr>
 * <tr>
 * <td>2021/1/7 10:15</td>
 * <td>linhongxi</td>
 * <td>Create</td>
 * </tr>
 * </table>
 *
 * @author linhongxi
 * @version 1.0.0
 * @since 1.0.0
 */
@Data
@TableName(value = "ASSISTANT_POLICY")
public class Policy {
    /** 保单ID policyId */
    @TableId(value = "POLICY_ID", type = IdType.ASSIGN_UUID)
    private String policyId;

    /**  创建人id createUserId */
    @TableField(value = "CREATE_USER_ID")
    private String createUserId;

    /** 创建时间 createTime */
    @TableField(value = "CREATE_TIME")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date createTime;

    /** 修改人id updateUserId */
    @TableField(value = "UPDATE_USER_ID")
    private String updateUserId;

    /** 修改时间 updateTime */
    @TableField(value = "UPDATE_TIME")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date updateTime;

    /** 备注 memo */
    @TableField(value = "MEMO")
    private String memo;

    /** 保单主险种名称 policyMainInsuranceName */
    @TableField(value = "MAIN_INSURANCE_NAME")
    private String policyMainInsuranceName;

    /** 保单主险种编码 policyMainInsuranceCode */
    @TableField(value = "MAIN_INSURANCE_CODE")
    private String policyMainInsuranceCode;

    /** 保单号 polityNumber */
    @TableField(value = "POLICY_NUMBER")
    private String policyNumber;

    /** 投保单号 policyApplicationNumber */
    @TableField(value = "POLICY_APPLICATION_NUMBER")
    private String policyApplicationNumber;

    /** 投保人姓名 policyHolderName */
    @TableField(value = "POLICY_HOLDER_NAME")
    private String policyHolderName;

    /** 投保人证件类型 policyHolderCertificateType */
    @TableField(value = "POLICY_HOLDER_CERTIFICATE_TYPE")
    private String policyHolderCertificateType;

    /** 投保人证件号码 policyHolderCertificateNumber */
    @TableField(value = "POLICY_HOLDER_CERTIFICATE_NUMBER")
    private String policyHolderCertificateNumber;

    /** 被保人姓名 insurederName */
    @TableField(value = "INSUREDER_NAME")
    private String insurederName;

    /** 被保人证件类型 insurederCertificateType */
    @TableField(value = "INSUREDER_CERTIFICATE_TYPE")
    private String insurederCertificateType;

    /** 被保人证件号码 insurederCertificateNumber */
    @TableField(value = "INSUREDER_CERTIFICATE_NUMBER")
    private String insurederCertificateNumber;

    /** 保单投保日期 getPolicyApplicationDate */
    @TableField(value = "POLICY_APPLICATION_DATE")
    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
    private Date policyApplicationDate;

    /** 保单承保日期 policyAcceptInsuranceDate */
    @TableField(value = "POLICY_ACCEPT_INSURANCE_DATE")
    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
    private Date policyAcceptInsuranceDate;

    /** 保单生效日期 policyEfficientDate */
    @TableField(value = "POLICY_EFFICIENT_DATE")
    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
    private Date policyEfficientDate;

    /** 保单满期日期 policyExpirationDate */
    @TableField(value = "POLICY_EXPIRATION_DATE")
    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
    private Date policyExpirationDate;

    /** 保单状态 policyStatus */
    @TableField(value = "POLICY_STATUS")
    private String policyStatus;

    /** 保单保费 policyPremium */
    @TableField(value = "POLICY_PREMIUM")
    private BigDecimal policyPremium;

    /** 用户和客户和合作公司用户关系ID userCustomerCooperationCompanyUserMapId */
    @TableField(value = "USER_CUSTOMER_COOPERATION_COMPANY_USER_MAP_ID")
    private String userCustomerCooperationCompanyUserMapId;

    /** 续期缴费金额 renewalPaymentAmount */
    @TableField(value = "RENEWAL_PAYMENT_AMOUNT")
    private BigDecimal renewalPaymentAmount;

    /** 续期缴费截止日期 renewalPaymentDeadline */
    @TableField(value = "RENEWAL_PAYMENT_DEADLINE")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date renewalPaymentDeadline;

    /** 续期状态 renewalStatus */
    @TableField(value = "RENEWAL_STATUS")
    private String renewalStatus;

    /** 是否满期保单 isExpirationPolicy */
    @TableField(value = "IS_EXPIRATION_POLICY")
    private boolean expirationPolicyFlag;

    /** 数据来源 dateSource */
    @TableField(value = "DATA_SOURCE")
    private String dateSource;

    /** 保单关联ID policyRelationId */
    @TableField(value = "POLICY_RELATION_ID")
    private String policyRelationId;

    /** 标准保费 standardPremium */
    @TableField(value = "STANDARD_PREMIUM")
    private BigDecimal standardPremium;

    /** 规模保费 policyRelationId */
    @TableField(value = "SCALE_PREMIUM")
    private BigDecimal scalePremium;

    /** 产品名称 productName */
    @TableField(value = "PRODUCT_NAME")
    private String productName;

    /** 退保申请日期 policyRelationId */
    @TableField(value = "SURRENDER_APPLICATION_DATE")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date surrenderApplicationDate;

    /** 退保日期 policyRelationId */
    @TableField(value = "SURRENDER_DATE")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date surrenderDate;

    /** 续期日期 policyRelationId */
    @TableField(value = "RENEWAL_DATE")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date renewalDate;

    /** 保单类型 policyType */
    @TableField(value = "POLICY_TYPE")
    private String policyType;

    /** 统一社会信用代码 unifiedSocialCreditCode */
    @TableField(value = "UNIFIED_SOCIAL_CREDIT_CODE")
    private String unifiedSocialCreditCode;

    /** 投保人数 insuredNumber */
    @TableField(value = "POLICY_APPLICATION_PERSONS_NUMBER")
    private String policyApplicationPersonsNumber;

    /** 投保公司名称 policyApplicationCompanyName */
    @TableField(value = "POLICY_APPLICATION_COMPANY_NAME")
    private String policyApplicationCompanyName;

}
